/* 
  1. 请求数据
  2. 点击轮播图进行预览大图
   1 轮播图绑定点击事件
   2. 调用小程序api previewImage
  3. 点击购物车，利用本地存储
    1. 点击事件，
    2. 获取缓存中的购物车数组 数组格式/对象格式
    3. 先判断，当前的商品是否已经存在于购物车内
    4. 已经存在了，修改商品数据，购物车该商品数量++，重回把购物车数组，填充回缓存中
    5。 不存在购物车中，直接给购物车里添加一个新的元素 新元素自带数量 1 填充回数组中
    6. 弹出消息提示
  4. 点击收藏
    1. 页面onshow的时候加载缓存中的数据
    2。判断 当前 商品是不是被收藏的
      1. 是 改变页面收藏图标
    3。 带年纪搜藏按钮
      1. 判断该商品在不在缓存中，在？删除：添加，改变图标

*/
import { request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    goodsObj: {},
    isCollect: false
  },
  // 商品对象
  goodsInfo:{},
  // 进球数据
  async getGoodsDetail(goods_id) {
    const res = await request({url: '/goods/detail',data: {goods_id}})
    this.goodsInfo = res
    // 获取缓存中的商品数组
    let collect = wx.getStorageSync("collect") || []
    // 判断当前商品是否被收藏了
    let isCollect = collect.some(v => {
      return v.goods_id === this.goodsInfo.goods_id
    })
    this.setData({
      goodsObj: {
        goods_name: res.goods_name,
        goods_price: res.goods_price,
        // iphone是不识别webp格式图片的
        // 和后台协商进行修改，或者临时修该 xxx.webp => xxx.jpg
        goods_introduce: res.goods_introduce.replace(/\.webp/g,'.jpg'),
        pics: res.pics
      },
      isCollect
    })
  },
  // 绑定轮播图点击事件,放大预览
  handlePreviewImage(e) {
    // 构建要预览的图片地址
    const urls = this.goodsInfo.pics.map(v=>v.pics_mid)
    const current = e.currentTarget.dataset.url
    // 接受传递过来的参数
    wx.previewImage({
      current, // 当前显示图片的http链接
      urls // 需要预览的图片http链接列表
    })
  },
  // 加入购物车
  handleCartAdd() {
    // 获取购物车数组，本地中没有就直接为空
    let cart = wx.getStorageSync("cart") || [];
    // 判断对象是否存在于购物车对象中
    let index = cart.findIndex(v => v.goods_id === this.goodsInfo.goods_id)
      if(index === -1){
        // 不存在
        this.goodsInfo.num = 1;
        this.goodsInfo.checked = true;
        cart.push(this.goodsInfo);
      }else {
        // 存在 num++
        cart[index].num ++;
      }
      // 存储
      wx.setStorageSync("cart",cart)
      // 弹窗提示
      wx.showToast({
        title: '加入购物车成功',
        icon: 'success',
        duration: 500,
        // 防止用户手抖疯狂点击
        mask: true
      });
        
  },
  // 点击商品收藏
  handleCollect() {
    let isCollect = false
    let collect  = wx.getStorageSync("collect") || []
    // 判断是否被收藏
    let index = collect.findIndex(v => v.goods_id === this.goodsInfo.goods_id)
    // index来判断是否收藏
    if( index !== -1) { // 取消收藏
      collect.splice(index,1)
      isCollect = false
      wx.showToast({
        title: '取消成功',
        icon: 'success',
        mask: true
      });
    } else { // 收藏
      collect.push(this.goodsInfo)
      isCollect = true
      wx.showToast({
        title: '收藏成功',
        icon: 'success',
        mask: true
      });
    }
    // 重新存入缓存
    wx.setStorageSync("collect", collect)
    // 修改data中的data属性 isCollect
    this.setData({
      isCollect
    })
  },
  onShow: function () {
    let pages =  getCurrentPages();
    let currentPages =  pages[pages.length-1]
    let options = currentPages.options
    const goods_id= options.goods_id;
    this.getGoodsDetail(goods_id)
  }
})